/*
 * Julien De Coster
 */
package mission2.model;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

import java.util.ArrayList;
import java.util.Iterator;

import java.io.IOException;
import java.io.FileNotFoundException;

public class FileIO {
	
	private File file;

	public FileIO(String path) {
		file = new File(path);
	}
	
	/* @Pre : Le fichier existe bien
	 * @Post : Un iterateur sur un tableau est renvoye. Ce tableau contient autant de
	 * cellule que de ligne dans le fichier. Chaque cellule contient une ligne.
	 */
	public Iterator<String> read() {
		
		// ArrayList qui contiendra une cellule par ligne du fichier
		ArrayList<String> lineArray = new ArrayList<String>();
		
		try {
			
			// Creation du flux
			FileInputStream fileInput = new FileInputStream(file);
			InputStreamReader fileReader = new InputStreamReader(fileInput);
			BufferedReader buffer = new BufferedReader(fileReader);
			
			String line; // Variable temporaire stockant la ligne
			
			// Lis et stocke chaque ligne dans l'ArrayList
			while ((line = buffer.readLine()) != null) {
				lineArray.add(line);
			}
			
			// Fermeture du flux
			buffer.close();
		}
		
		// Le fichier inexistant
		catch(FileNotFoundException e) {
			e.printStackTrace();
		}
		
		// Erreur IO
		catch (IOException e) {
			e.printStackTrace();
		}
		
		return lineArray.iterator(); // Retourne le tableau de ligne(s)
	}
	
	/* @input : Un tableau de String
	 * @output : Le fichier est ecrit, chaque cellule represente une ligne
	 */
	public void write(ArrayList<String> lineList) {
		try {
			
			// Creation du flux
			PrintWriter writer = new PrintWriter(file);
			
			// Ecriture ligne par ligne dans le fichier
			Iterator<String> it = lineList.iterator();
			while(it.hasNext()) {
				writer.println(it.next());
			}
			
			// Fermeture du flux
			writer.close();
		}
		
		// Fichier inexistant
		catch(FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}
